"""
元组的定义和操作
元组是Python中的一种数据结构，与列表类似，但元组是不可变的（即不能修改其内容）。
元组使用小括号()定义，元素之间用逗号分隔。
"""
# 定义元组
# 1. 使用小括号定义
my_tuple = (1, 2, 3, 'a', 'b', 'c')
my_tuple1 = ()
print(my_tuple)   # 输出: (1, 2, 3, 'a', 'b', 'c')
print(my_tuple1)  # 输出: ()
# 2.定义单个元素的元组时，需要在元素后面加逗号
single_element_tuple = (1,)
print(single_element_tuple)  # 输出: (1,)
# 3.元组的嵌套
nested_tuple = (1, 2, (3, 4), 'a')
print(nested_tuple)  # 输出: (1, 2, (3, 4), 'a')
# 4.下标索引访问
print(my_tuple[0])  # 输出第一个元素: 1
print(my_tuple[3])  # 输出第四个元素: 'a'
print(my_tuple[-1]) # 输出最后一个元素: 'c'
print(type(my_tuple))
print(nested_tuple[2][1])  # 输出嵌套元组中的元素: 4
print(type(nested_tuple[2][1]))
# 5.元组的操作：index
index_of_a = my_tuple.index('a')
print("元素'a'的索引位置:", index_of_a)  # 输出: 元素'a'的索引位置: 3
# 6.元组的操作：count
count_of_1 = my_tuple.count(1)
print(f"元素1的出现次数:{count_of_1}")  # 输出: 元素1的出现次数: 1
# 7.元组的遍历-while循环
print("使用while循环遍历元组:")
index = 0
while index < len(my_tuple):
    print(f"索引{index}的元素是:{my_tuple[index]}")
    index += 1
# 8.元组的遍历-for循环
print("使用for循环遍历元组:")
for item in my_tuple:
    print(item)
# 9.修改元组内容
# my_tuple[0] = 10  # 这将引发错误，因为元组是不可变的
# print(my_tuple)
# 10.元组中的list是可变的
my_tuple2 = (1, 2, [3, 4], 'a')
print("修改前的元组:", my_tuple2)  # 输出: 修改前的元组: (1, 2, [3, 4], 'a')
my_tuple2[2][0] = 30
print("修改后的元组:", my_tuple2)  # 输出: 修改后的元组: (1, 2, [30, 4], 'a')
# 11.元组的基本操作案例
# 定义一个元组
sample_tuple = ('周杰伦',11,['football','music'])
index = sample_tuple.index(11)
print(f"元素11的索引位置是:{index}")  # 输出: 元素11的索引位置是:1
count = sample_tuple.count('周杰伦')
print(f"元素'周杰伦'的出现次数是:{count}")  # 输出: 元素'周杰伦'的出现次数是:1
del sample_tuple[2][0]
print(f"删除元素'football'后的元组是:{sample_tuple}")  # 输出: 删除元素'football'后的元组是:('周杰伦', 11, ['music'])
sample_tuple[2].append('coding')
print(f"添加元素'coding'后的元组是:{sample_tuple}")  # 输出: 添加元素'coding'后的元组是:('周杰伦', 11, ['music', 'coding'])
